home *** CD-ROM | disk | FTP | other *** search
- /*
- * Windows Kermit header file
- *
- * Copyright (c) 1990, 1991 by
- * William S. Hall
- * 3665 Benton Street, #66
- * Santa Clara, CA 95051
- *
- * This file should be included in one module in
- * the code for the terminal in the following
- * way in order to declare the Kermit external variables:
- * #if defined(KERMIT)
- * #define KERMITEXTERN
- * #include "wnkerm.h"
- * #endif
- *
- */
-
- /* This curious construction allows declaration of
- * Kermit variables only in the module in which
- * KERMITEXTERN is defined
- */
- #if !defined(KERMITEXTERN)
- #define KERMITEXTERN extern
- #endif
-
- /*
- * Kermit function declarations
- */
- /* from Kermit protocol module */
- int wart(void);
-
- /* from Kermit function support module wnkfns.c */
- void NEAR krm_tinit(void); /* initialize session */
- int NEAR krm_sinit(char); /* send init packet */
- int NEAR krm_sendcmd(char cmd, BYTE *cmdstr);
- int NEAR krm_srinit(BYTE *filename);
- int NEAR krm_opent(void);
- void NEAR krm_err(int ref); /* respond to error */
- void NEAR krm_spar(BYTE *data, short len);/* read remote's init params */
- char * NEAR krm_getnextfile(BOOL first); /* build incoming packet */
- int NEAR krm_sfile(void); /* send file name */
- int NEAR krm_seot(void); /* send break packet */
- int NEAR krm_seof(char *s); /* send end of file packet */
- int NEAR krm_sdata(void); /* send file data */
- BOOL NEAR krm_rclose(BOOL); /* close a file */
- void NEAR krm_tend(int code); /* end session */
- void NEAR krm_checkcnx(void); /* check for session cancellation */
- int NEAR krm_rpar(BYTE data[]); /* prepare local init packet */
- /* encode data before transmission */
- int NEAR krm_encode(BYTE *outbuf, BYTE *inbuf, int maxlen, int *len);
- void NEAR krm_ack(short len, BYTE * str); /* ack a packet */
- BOOL NEAR krm_rcvfil(void); /* receive a file name */
- BOOL NEAR krm_rcvdata(void); /* receive data */
- int NEAR krm_rpack(void); /* read a packet and return type */
- void NEAR krm_resend(void); /* resend a packet */
- /* create a pseudo packet for handling internal errors */
- void NEAR krmCreatePseudoPacket(char type, short state, int msgnum);
- void FAR krmShowMessage(int msgnum); /* show a message to user */
- BOOL FAR krmWndCommand(HWND hWnd, WORD mode); /* Kermit menu function */
- void FAR krmPaint(HWND hWnd, HDC hDC); /* paint terminal's icon */
- void NEAR krm_savename(void); /* show remote's name for file */
- void NEAR krmFlushQue(void); /* flush the input and output queues */
- int FAR krmShutdown(void); /* respond to terminal shutdown */
- /* handle packet timeouts */
- void FAR PASCAL krmDoTimeout(HWND hWnd,unsigned message,
- short event,DWORD time);
-
- /* from Kermit dialog box routines module wnkmsc.c */
- /* open a dialog box */
- int FAR krmOpenDlgBox(HWND hWnd, FARPROC fpProc, WORD boxnum);
- /* show progress of transfers */
- BOOL FAR PASCAL krmXferDlgBox(HWND, unsigned, WORD, LONG);
- /* cancel session */
- BOOL FAR PASCAL krmCancelBoxProc(HWND, unsigned, WORD, LONG);
- /* select files for sending */
- BOOL FAR PASCAL krmSendFileProc(HWND, unsigned, WORD, LONG);
- /* modify protocol parameters */
- BOOL FAR PASCAL krmProtocol(HWND hDlg,unsigned message,
- WORD wParam,LONG lParam);
- /* modify inbound and outbound packet parameters */
- BOOL FAR PASCAL krmPackets(HWND hDlg,unsigned message,WORD wParam,LONG lParam);
- BOOL FAR PASCAL krmXferRemote(HWND hDlg,unsigned message,
- WORD wParam,LONG lParam);
- BOOL FAR PASCAL krmCWD(HWND hDlg, unsigned message, WORD wParam, LONG lParam);
- BOOL FAR PASCAL krmRemote1ParamCmd(register HWND hDlg, unsigned message,
- register WORD wParam, LONG lParam);
- /* local file support */
- BOOL FAR PASCAL krmLocalFiles(HWND hDlg,unsigned message,
- WORD wParam,LONG lParam);
-
- /* from Kermit initialization module wnkint.c */
- /* start up initialization of Kermit */
- BOOL FAR krmInit(HWND hWnd,BYTE *bufptr,int *buflen,
- int *cid,int menupos);
-
- /* macros */
- #define tochar(ch) ((ch) + ' ') /* convert int to printable char */
- #define unchar(ch) ((ch) - ' ') /* convert printable char to int */
- #define ctl(ch) ((ch) ^ 64) /* 'controllify' a char */
-
- /* constants and defaults */
- #define KRM_MINTIMEOUT 2 /* packet timeout parameters */
- #define KRM_MAXTIMEOUT 60
- #define KRM_DEFTIMEOUT 5
- #define KRM_MINPACKETSIZE 10 /* packet sizes */
- #define KRM_MAXPACKETSIZE 94
- #define KRM_DEFPACKETSIZE 80
- #define KRM_MAXDATALEN (KRM_MAXPACKETSIZE - 3) /* max data size */
- #define KRM_FILEABORT 1 /* file transfer abort flags */
- #define KRM_BATCHABORT 2
- #define KRM_DATA_PACKET 0 /* show data in packet */
- #define KRM_MAXPADCOUNT 94 /* packet padding paramters */
- #define KRM_DEFPADCOUNT 0
- #define KRM_DEFPADCHAR '\000'
- #define KRM_DEFTIMER TRUE /* default to timer on */
- //#define KRM_DEFVERBOSE TRUE /* show transfer details */
- #define KRM_DEFFILEWARN TRUE /* warn about duplicate files */
- #define KRM_DEFDISCARD TRUE /* discard partial files */
- #define KRM_DEFBELL TRUE /* ring bell after transfer */
- #define KRM_DEFBLOCKCHECK 1 /* default block check type */
- #define KRM_DEFSENDDELAY 0 /* default delay before first packet */
- #define KRM_MAXSENDDELAY 60 /* maximum delay */
- #define KRM_DEFRETRYLIMIT 10 /* retry limits */
- #define KRM_MAXRETRYLIMIT 63
- #define KRM_MINRETRYLIMIT 1
- #define KRM_DEFMARK '\001' /* default start of packet char */
- #define KRM_DEFEOL '\015' /* default end of packet char */
- #define KRM_DEFQUOTE '#' /* default control char quote */
- #define KRM_DEFEBQUOTE '&' /* default 8-bit char quote */
- #define KRM_DEFRPTQUOTE '~' /* default repeat char quote */
-
- /* menu items */
- #define KRM_MENUBASE 10000 /* adjust to avoid menu id conflicts */
- #define IDM_KRM_RECEIVE KRM_MENUBASE
- #define IDM_KRM_SEND KRM_MENUBASE+1
- #define IDM_KRM_CANCEL KRM_MENUBASE+2
- #define IDM_KRM_FILEABORT KRM_MENUBASE+3
- #define IDM_KRM_BATCHABORT KRM_MENUBASE+4
- #define IDM_KRM_ERRORABORT KRM_MENUBASE+5
- #define IDM_KRM_PROTOCOL KRM_MENUBASE+6
- #define IDM_KRM_PACKETS KRM_MENUBASE+7
- #define IDM_KRM_GET KRM_MENUBASE+8
-
- #define IDM_KRM_REMOTELOGIN KRM_MENUBASE+9
- #define IDM_KRM_REMOTECWD KRM_MENUBASE+10
- #define IDM_KRM_REMOTEBYE KRM_MENUBASE+11
- #define IDM_KRM_REMOTELOGOUT KRM_MENUBASE+12
- #define IDM_KRM_REMOTEFINISH KRM_MENUBASE+13
- #define IDM_KRM_REMOTEDIR KRM_MENUBASE+14
- #define IDM_KRM_REMOTESPACE KRM_MENUBASE+15
- #define IDM_KRM_REMOTEERASE KRM_MENUBASE+16
- #define IDM_KRM_REMOTETYPE KRM_MENUBASE+17
- #define IDM_KRM_REMOTERENAME KRM_MENUBASE+18
- #define IDM_KRM_REMOTECOPY KRM_MENUBASE+19
- #define IDM_KRM_REMOTEWHO KRM_MENUBASE+20
- #define IDM_KRM_REMOTEMESSAGE KRM_MENUBASE+21
- #define IDM_KRM_REMOTEHELP KRM_MENUBASE+22
- #define IDM_KRM_REMOTESTATUS KRM_MENUBASE+23
- #define IDM_KRM_REMOTEPROGRAM KRM_MENUBASE+24
- #define IDM_KRM_REMOTEJOURNAL KRM_MENUBASE+25
- #define IDM_KRM_REMOTEVARIABLE KRM_MENUBASE+26
- #define IDM_KRM_REMOTECOMMAND KRM_MENUBASE+27
- #define IDM_KRM_LOCALFILES KRM_MENUBASE+28
-
- /* strings */
- #define KRM_STRINGBASE 10100 /* adjust to avoid string id conflicts */
- #define IDS_KRM_TRANSACTION_DONE KRM_STRINGBASE
- #define IDS_KRM_UNKNOWN_PACKET KRM_STRINGBASE+1
- #define IDS_KRM_CANCELLED KRM_STRINGBASE+2
- #define IDS_KRM_TOOMANYRETRIES KRM_STRINGBASE+3
- #define IDS_KRM_FILE_OPEN_ERROR KRM_STRINGBASE+4
- #define IDS_KRM_FILE_READ_ERROR KRM_STRINGBASE+5
- #define IDS_KRM_FILE_WRITE_ERROR KRM_STRINGBASE+6
- #define IDS_KRM_FILE_CLOSE_ERROR KRM_STRINGBASE+7
- #define IDS_KRM_SENDING KRM_STRINGBASE+8
- #define IDS_KRM_SENDINIT_ERROR KRM_STRINGBASE+9
- #define IDS_KRM_SENDFILENAME_ERROR KRM_STRINGBASE+10
- #define IDS_KRM_SENDDATA_ERROR KRM_STRINGBASE+11
- #define IDS_KRM_SENDEOF_ERROR KRM_STRINGBASE+12
- #define IDS_KRM_SENDEOT_ERROR KRM_STRINGBASE+13
- #define IDS_KRM_CANNOTINIT KRM_STRINGBASE+14
- #define IDS_KRM_KERMITMENU KRM_STRINGBASE+15
- #define IDS_KRM_KERMIT KRM_STRINGBASE+16
- #define IDS_KRM_TIMER KRM_STRINGBASE+17
- #define IDS_KRM_FILEWARN KRM_STRINGBASE+18
- //#define IDS_KRM_VERBOSE KRM_STRINGBASE+19
- #define IDS_KRM_DISCARD KRM_STRINGBASE+20
- #define IDS_KRM_BELL KRM_STRINGBASE+21
- #define IDS_KRM_BLOCKCHECKTYPE KRM_STRINGBASE+22
- #define IDS_KRM_SENDDELAY KRM_STRINGBASE+23
- #define IDS_KRM_RETRYLIMIT KRM_STRINGBASE+24
- #define IDS_KRM_SENDMARK KRM_STRINGBASE+25
- #define IDS_KRM_RCVMARK KRM_STRINGBASE+26
- #define IDS_KRM_SENDMAXLEN KRM_STRINGBASE+27
- #define IDS_KRM_RCVMAXLEN KRM_STRINGBASE+28
- #define IDS_KRM_SENDTIMEOUT KRM_STRINGBASE+29
- #define IDS_KRM_RCVTIMEOUT KRM_STRINGBASE+30
- #define IDS_KRM_SENDPADCOUNT KRM_STRINGBASE+31
- #define IDS_KRM_RCVPADCOUNT KRM_STRINGBASE+32
- #define IDS_KRM_SENDPADCHAR KRM_STRINGBASE+33
- #define IDS_KRM_RCVPADCHAR KRM_STRINGBASE+34
- #define IDS_KRM_SENDEOL KRM_STRINGBASE+35
- #define IDS_KRM_RCVEOL KRM_STRINGBASE+36
- #define IDS_KRM_SENDQUOTE KRM_STRINGBASE+37
- #define IDS_KRM_RCVQUOTE KRM_STRINGBASE+38
- #define IDS_KRM_QUIT KRM_STRINGBASE+39
- #define IDS_KRM_TERMINAL_OPEN_ERROR KRM_STRINGBASE+40
- #define IDS_KRM_SENDCMD_ERROR KRM_STRINGBASE+41
- #define IDS_KRM_SENDR_ERROR KRM_STRINGBASE+42
- #define IDS_KRM_REMOTEHELP KRM_STRINGBASE+43
- #define IDS_KRM_HELPTOPIC KRM_STRINGBASE+44
- #define IDS_KRM_REMOTECOMMAND KRM_STRINGBASE+45
- #define IDS_KRM_CMDTOPIC KRM_STRINGBASE+46
- #define IDS_KRM_REMOTEDIR KRM_STRINGBASE+47
- #define IDS_KRM_REMOTETYPE KRM_STRINGBASE+48
- #define IDS_KRM_REMOTESPACE KRM_STRINGBASE+49
- #define IDS_KRM_SPACETOPIC KRM_STRINGBASE+50
- #define IDS_KRM_REMOTEWHO KRM_STRINGBASE+51
- #define IDS_KRM_WHOTOPIC KRM_STRINGBASE+52
- #define IDS_KRM_REMOTEERASE KRM_STRINGBASE+53
- #define IDS_KRM_WINDOWOVERFLOW KRM_STRINGBASE+54
-
- /* timer values */
- #define KRM_TIMERBASE 10200 /* adjust as needed for timer conflicts */
- #define KRM_WAITPACKET KRM_TIMERBASE /* SetTimer parameter for timeout */
- #define KRM_WAITSEND KRM_TIMERBASE+1 /* SetTimer parameter for send delay */
-
- /* dialog boxes */
- #define KRM_DLGBASE 10300
- #define DT_KRM_XFER 10300
- #define DT_KRM_CANCEL 10301
- #define DT_KRM_SENDFILE 10302
- #define DT_KRM_PROTOCOL 10303
- #define DT_KRM_PACKETS 10304
- #define DT_KRM_GETFILE 10305
- #define DT_KRM_CWD 10306
- #define DT_KRM_REMOTE 10307
- #define DT_KRM_LOCALFILES 10308
-
- /* this enumeration type is used to plot the
- * progress of a packet as it is filled
- */
- enum PACKETSTATE {PS_START, /* start accumulating packet data */
- PS_SYNCH, /* waiting for start of header */
- PS_LEN, /* waiting for length byte */
- PS_NUM, /* waiting for packet number */
- PS_TYPE, /* waiting for packet type */
- PS_DATA, /* reading data */
- PS_CHK, /* reading checksum */
- PS_DONE, /* packet is complete */
- };
-
- /*
- * KERMITPARAMS
- *
- * This data structure is associated with the Kermit protocol
- * settings dialog box.
- *
- */
- typedef struct _KERMITPARAMS {
- BOOL Bell; /* sound warning bell */
- BOOL Timer; /* use timer */
- BOOL DiscardPartialFile; /* discard partial file */
- BOOL FileWarning; /* rename incoming files if conflict */
- short BlockCheckType; /* char, word, or CRC block check */
- short SendDelay; /* delay before sending first packet */
- short RetryLimit; /* retry attempts before timing out */
- BYTE ebquote; /* eight bit quote character */
- BYTE rpquote; /* repeat quote character */
- // BOOL verbose; /* show progress of transfer */
- } KERMITPARAMS;
-
- /*
- * KRMPACKETPARAMS
- *
- * This data structure is associated with the Kermit packet
- * settings dialog box.
- *
- */
- typedef struct _KRMPACKETPARAMS {
- BYTE mark; /* start of header character */
- short maxpktsize; /* maximum packet size */
- short timeout; /* timeout interval */
- short padcount; /* padding character count */
- BYTE padchar; /* padding character */
- BYTE eol; /* end of packet character */
- BYTE quote; /* control character quote */
- } KRMPACKETPARAMS;
-
- /*
- * KERMITDATA
- *
- * This structure contains most of the additional parameters
- * needed by Kermit.
- */
- typedef struct _KERMITDATA {
- HWND hWnd; /* main window handle */
- HANDLE hInst; /* instance handle */
- BOOL start; /* start transfer */
- BOOL InTransfer; /* in transfer */
- WORD mode; /* mode of transfer - send, receive */
- short bctu; /* block check type used */
- short bctr; /* block check type requested */
- short seq; /* packet sequence number */
- BOOL delay; /* waiting to send first packet */
- FARPROC fpTimer; /* farproc pointer to Kermit timer */
- short retries; /* retries per packet */
- short totalretries; /* total retries */
- OFSTRUCT fstruct; /* file structure */
- DWORD bytesmoved; /* bytes transferred */
- DWORD packetcount; /* packets exchanged */
- DWORD filesize; /* size of send file */
- int percentage; /* percentage of file sent */
- int maxsenddatalen; /* max send packet data length */
- int hFile; /* file handle */
- HANDLE hFilelist; /* handle to send file list */
- char *pFilelist; /* pointer to send file list */
- char *pFile; /* pointer to single file */
- HWND hWndXfer; /* handle to transfer dialog box */
- FARPROC fpXfer; /* transfer dialog box farproc */
- FARPROC fpXferRemote; /* transfer dialog box farproc */
- short abort; /* abort type; file or group */
- BOOL ebqflag; /* using eight-bit quoting */
- BOOL rptflag; /* using run-length encoding */
- BOOL putterm;
- } KERMITDATA;
-
- /*
- * KRMPACKET structure
- *
- * This data structure is used to hold the various fields
- * of a packet received from the remote Kermit.
- *
- */
- typedef struct _KRMPACKET {
- short len; /* length of packet */
- short seq; /* packet sequence number */
- BYTE type; /* packet type */
- BYTE data[KRM_MAXDATALEN + 1]; /* packet data */
- char rchksum[3]; /* received checksum bytes */
- short data_count; /* current data count */
- short chk_count; /* current checksum data count */
- enum KRMPACKETSTATE state; /* state of packet decomposition */
- } KRMPACKET;
-
- /*
- * KRMSENDINIT structure
- *
- * This structure is used to hold the parameters required
- * to compose outbound packets and to decompose inbound packets.
- *
- */
- typedef struct _KRMSENDINIT {
- BYTE mark; /* start of packet header */
- short maxpktsize; /* maximum packet size */
- short timeout; /* how many seconds to wait before timing out */
- short padcount; /* how much padding to add to a packet */
- BYTE padchar; /* character used for padding */
- BYTE eol; /* character denoting end of packet */
- BYTE quote; /* control code quote character */
- BYTE ebquote; /* eight bit quote character */
- BYTE rpquote; /* run length quote character */
- } KRMSENDINIT;
-
- /* External variables needed by Kermit */
- KERMITEXTERN KERMITPARAMS KermParams; /* protocol dialog box values */
- KERMITEXTERN KRMPACKETPARAMS sndparams; /* outbound packet dialog box values */
- KERMITEXTERN KRMPACKETPARAMS rcvparams; /* inbound packet dialog box values */
-
- KERMITEXTERN KRMSENDINIT krm_sndinit; /* data for making outbound packets */
- KERMITEXTERN KRMSENDINIT krm_rcvinit; /* data for making inbound packets */
- KERMITEXTERN KERMITDATA Kermit; /* most other Kermit data */
- KERMITEXTERN KRMPACKET krm_rcvpkt; /* holds data from incoming packet */
-
- KERMITEXTERN BYTE krm_sndpkt[100]; /* Holds an assembled packet to be sent */
- KERMITEXTERN BYTE *krmBufptr; /* Buffer holding data read from comm port */
- KERMITEXTERN int *krmBuflen; /* Length of data in buffer */
- KERMITEXTERN int *krmcid; /* Comm port identifier */
- KERMITEXTERN HICON krmIcon; /* Kermit icon */
-